package factory.base;


/**
 * 披萨商店 基类 可以制造披萨 处理披萨订单
 * @author yaojianfeng
 */
public abstract class BasePizzaStore {
    public BasePizza pizza;


    /**
     *处理披萨订单  此方法不知道创建哪个具体实现 由运行时类确定
     * @param type 披萨类型
     * @return 具体的披萨对象
     */
    public BasePizza orderPizza(String type){
        pizza = creatPizza(type);
        pizza.prepare();
        pizza.bake();
        pizza.cut();
        pizza.box();
        return pizza;
    }

    /**
     * 工厂方法:
     * 获取披萨对象
     * @param pizzaType 披萨类型
     * @return 由披萨基类派生的具体的披萨
     */
    public abstract BasePizza creatPizza(String pizzaType);
}
